package com.yqh;

/**
 * 字符流的原理解析
 * @author 阳秋豪
 * @createTime 2024/3/7
 */
public class Test4 {
    public static void main(String[] args) {
        /*----------------- 字符输入流底层原理 -----------------*/
        // 1、创建字符输入流对象
        // -- 关联文件，并创建缓冲区(长度为8192的字节数组)
        // 2、读取数据
        // -- 判断缓冲区中是否有数据可以读取
        // -- 缓冲区没有数据：就从文件中获取数据，装到缓冲区中，每次尽可能装满缓冲区如果文件中也没有数据了，返回-1
        // -- 缓冲区有数据：就从缓冲区中读取。
        // -- 空参的 read 方法：一次读取一个字节，遇到中文一次读多个字节，把字节解码并转成十进制返回
        // -- 有参的 read 方法：把读取字节，解码，强转三步合并了，强转之后的字符放到数组中

        /*----------------- 字符输出流底层原理 -----------------*/
        // 1、创建字符输出流对象
        // -- 关联文件，并创建缓冲区(长度为8192的字节数组)
        // 2、写数据
        // -- 缓冲区满了写入磁盘
        // -- 调用 flush 方法写入磁盘（可以继续写数据到缓冲区）
        // -- 调用 close 方法写入磁盘（不可以继续写数据到缓冲区）
    }
}
